/**  
* Copyright (c) 2009, Noel Lynch All rights reserved. Redistribution and use  
* in source and binary forms, with or without modification, are permitted  
* provided that the following conditions are met: Redistributions of source  
* code must retain the above copyright notice, this list of conditions and the  
* following disclaimer. Redistributions in binary form must reproduce the above  
* copyright notice, this list of conditions and the following disclaimer in the  
* documentation and/or other materials provided with the distribution. Neither  
* the name of Noel Lynch nor the names of contributors may be used to  
* endorse or promote products derived from this software without specific prior  
* written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 
* CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT  
* NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A  
* PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR  
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,  
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,  
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;  
* OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,  
* WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR  
* OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF  
* ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.  
*/
// created by noellynch
// Jun 19, 2009

package com.sceneworker.jmetreeextensions.keybindingmanager;

import javax.swing.Icon;

import com.acarter.composabletree.ComposableTreeNode;
import com.jme.input.KeyInput;
import com.jme.input.KeyBindingManager.KeyCodes;

public class KeyTreeNode implements ComposableTreeNode {

	public Object getChild(Object parent, int index) {
		if(parent instanceof KeyCodes) {
			return ((KeyCodes)parent).keys[index];
		}
		return null;
	}

	public int getChildCount(Object parent) {
		if(parent instanceof KeyCodes) {
			return ((KeyCodes)parent).keys.length;
		}
		return 0;
	}

	public int getChildIndex(Object parent, Object child) {
		if(parent instanceof KeyCodes) {
			int		li_v = (Integer)child;
			for(int li_index = 0; li_index < ((KeyCodes)parent).keys.length; li_index++) {
				
				if(((KeyCodes)parent).keys[li_index] == li_v) {
					return li_index;
				}
			}
			return 0;
		}
		
		return 0;
	}

	public Icon getIcon(Object node) {
		return null;
	}

	public Class<?> getNodeClassType() {
		return Integer.class;
	}

	public String getNodeText(Object node, boolean selected, boolean expanded,
			boolean leaf, int row, boolean hasFocus) {
		try {
			return KeyInput.get().getKeyName((Integer)node);
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		return "";
	}

	public String getNodeToolTipText(Object node, boolean selected,
			boolean expanded, boolean leaf, int row, boolean hasFocus) {
		return KeyInput.get().getKeyName((Integer)node);
	}

	public Object getParent(Object child) {
		return null;
	}

}
